Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / terminalRender.js

Displaying Raw • Download


meshchatx/src/frontend/js/terminalRender.js 9f75e3db181925ddd253f7fb231af81f9fb8c013 (9f75e3db) Text, 2.42 KB

T8b949e// SPDX-License-Identifier: 0BSD

Tff7b72const Te6edf3ESC Tff7b72= Ta5d6ff"\u001b"Tb4b4b4;

Tff7b72const Te6edf3OSC_SEQUENCE Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff`Tffd700${Te6edf3ESCTffd700}Ta5d6ff\\Ta5d6ff][^Ta5d6ff\\Ta5d6ffu0007Tffd700${Te6edf3ESCTffd700}Ta5d6ff]*(?:Ta5d6ff\\Ta5d6ffu0007|Tffd700${Te6edf3ESCTffd700}Ta5d6ff\\Ta5d6ff\\Ta5d6ff)Ta5d6ff`Tb4b4b4, Ta5d6ff"g"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3STRING_SEQUENCE Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff`Tffd700${Te6edf3ESCTffd700}Ta5d6ff[P^_][^Tffd700${Te6edf3ESCTffd700}Ta5d6ff]*Tffd700${Te6edf3ESCTffd700}Ta5d6ff\\Ta5d6ff\\Ta5d6ff`Tb4b4b4, Ta5d6ff"g"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3CSI_SEQUENCE Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff`Tffd700${Te6edf3ESCTffd700}Ta5d6ff\\Ta5d6ff[[0-?]*[ -/]*[@-~]Ta5d6ff`Tb4b4b4, Ta5d6ff"g"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3SINGLE_ESCAPE Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff`Tffd700${Te6edf3ESCTffd700}Ta5d6ff[@-ZTa5d6ff\\Ta5d6ff\\Ta5d6ff-_]Ta5d6ff`Tb4b4b4, Ta5d6ff"g"Tb4b4b4)Tb4b4b4;
T8b949e// eslint-disable-next-line no-control-regex
Tff7b72const Te6edf3STRIP_CONTROL Tff7b72= Ta5d6ff/[\u0000-\u0007\u000b\u000c\u000e-\u001f\u007f]/gTb4b4b4;
Tff7b72const Te6edf3TAB_WIDTH Tff7b72= T79c0ff8Tb4b4b4;

T8b949e/**
* Strip ANSI escape and control sequences, preserving newline, carriage
* return, tab and backspace which are handled by the cursor simulation.
*
* @param {string} input
* @returns {string}
*/
Tff7b72function Te6edf3stripAnsiTb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3input
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3OSC_SEQUENCETb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3STRING_SEQUENCETb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3CSI_SEQUENCETb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3SINGLE_ESCAPETb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3STRIP_CONTROLTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Convert raw pseudo-terminal output into readable plain text.
*
* ANSI colour and cursor-control sequences are removed, while carriage
* returns, backspaces and tabs are applied so that progress redraws and
* line edits collapse into their final visible form.
*
* @param {string} raw
* @returns {string}
*/
Tff7b72export Tff7b72function Te6edf3renderTerminalOutputTb4b4b4(Te6edf3rawTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3raw Tff7b72!== Ta5d6ff"string" Tff7b72|| Te6edf3rawTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3cleaned Tff7b72= Te6edf3stripAnsiTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3rows Tff7b72= Tb4b4b4[Tb4b4b4[Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3row Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3col Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3ch Tff7b72of Te6edf3cleanedTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3ch Tff7b72=== Ta5d6ff"\n"Tb4b4b4) Tb4b4b4{
Te6edf3row Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rowsTb4b4b4[Te6edf3rowTb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3rowsTb4b4b4[Te6edf3rowTb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Te6edf3col Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3ch Tff7b72=== Ta5d6ff"\r"Tb4b4b4) Tb4b4b4{
Te6edf3col Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3ch Tff7b72=== Ta5d6ff"\b"Tb4b4b4) Tb4b4b4{
Te6edf3col Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3col Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3ch Tff7b72=== Ta5d6ff"\t"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3stop Tff7b72= Te6edf3col Tff7b72+ Tb4b4b4(Te6edf3TAB_WIDTH Tff7b72- Tb4b4b4(Te6edf3col Tff7b72% Te6edf3TAB_WIDTHTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3col Tff7b72< Te6edf3stopTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3rowsTb4b4b4[Te6edf3rowTb4b4b4]Tb4b4b4[Te6edf3colTb4b4b4] Tff7b72=== Tff7b72undefinedTb4b4b4) Tb4b4b4{
Te6edf3rowsTb4b4b4[Te6edf3rowTb4b4b4]Tb4b4b4[Te6edf3colTb4b4b4] Tff7b72= Ta5d6ff" "Tb4b4b4;
Tb4b4b4}
Te6edf3col Tff7b72+= T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3rowsTb4b4b4[Te6edf3rowTb4b4b4]Tb4b4b4[Te6edf3colTb4b4b4] Tff7b72= Te6edf3chTb4b4b4;
Te6edf3col Tff7b72+= T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72return Te6edf3rows
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3cellsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3line Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3cellsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3i Tff7b72+= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3line Tff7b72+= Te6edf3cellsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72=== Tff7b72undefined Tff7b72? Ta5d6ff" " Tff7b72: Te6edf3cellsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3lineTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\s+$/Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────